#! /bin/sh

set -e

# needed for debconf magic in prerm script
. /usr/share/debconf/confmodule

# summary of how this script can be called:
#        * <postinst> `configure' <most-recently-configured-version>
#        * <old-postinst> `abort-upgrade' <new version>
#        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
#          <new-version>
#        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
#          <failed-install-package> <version> `removing'
#          <conflicting-package> <version>

case "$1" in
    configure)
	for file in cryptdisks_start cryptdisks_stop; do
		if [ ! -e /usr/sbin/$file ]; then
			ln -s /sbin/$file /usr/sbin/$file
		fi
	done

	if [ -x /usr/sbin/update-initramfs ]; then
		update-initramfs -u
	fi

	# Do a number of checks on the currently installed crypttab

	egrep -v "^[[:space:]]*(#|$)" /etc/crypttab | while read dst src key opts; do
		if [ -z "$dst" ]; then
			continue
		elif [ -z "$src" ] || [ -z "$key" ] || [ -z "$opts" ]; then
			# All fields must be present
			echo "WARNING: $dst in /etc/crypttab is missing some arguments, see man cryptab(5)." >&2
			continue
		else
			# Strip comments - https://bugs.launchpad.net/bugs/185380
			opts=$(echo -n $opts | sed 's/ *#.*//')
			plainopts="0"
			IFS=','
			for opt in $opts; do
				PARAM=$(echo "$opt" | sed 's/=.*//')
				case "$PARAM" in
				# Some options are deprecated
				gpg)
					echo "WARNING: $dst in /etc/crypttab uses the deprecated gpg option, see man crypttab(5)." >&2
					;;
				ssl)
					echo "WARNING: $dst in /etc/crypttab uses the deprecated ssl option, see man crypttab(5)." >&2
					;;
				luks)
					plainopts="3"
					;;
				cipher|hash|size)
					plainopts="$(($plainopts+1))"
					;;
				esac
			done
			if [ "$plainopts" -lt "3" ]; then
				echo "WARNING: you need to set all of cipher, hash and size for the plain dm-crypt mapping $dst in /etc/crypttab." >&2
			fi
			unset IFS
		fi

	done
    ;;

    abort-upgrade|abort-remove|abort-deconfigure)

    ;;

    *)
        echo "postinst called with unknown argument \`$1'" >&2
        exit 1
    ;;
esac

# dh_installdeb will replace this with shell code automatically
# generated by other debhelper scripts.

#DEBHELPER#
